package com.chatdating.utils;

import org.apache.commons.codec.binary.Hex;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


public class SHA256Util {
    /**
     * 使用SHA-256算法加密字符串
     * @param input 要加密的字符串
     * @return 64个字符的十六进制哈希值
     */
    public static String encrypt(String input) {
        try {
            // 获取SHA-256消息摘要实例
            MessageDigest digest = MessageDigest.getInstance("SHA-256");

            // 计算哈希值
            byte[] hashBytes = digest.digest(input.getBytes());

            // 将字节数组转换为十六进制字符串
            return  Hex.encodeHexString(hashBytes);

        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("SHA-256 algorithm not available", e);
        }
    }

    /**
     * 验证输入字符串与哈希值是否匹配
     * @param input 要验证的字符串
     * @param hash 存储的哈希值
     * @return 是否匹配
     */
    public static boolean verify(String input, String hash) {
        return encrypt(input).equals(hash);
    }
}
